The Automatic ReQuest (ARQ) protocol is the basic scheme used in data communications in which the receiving station requests retransmission of a data packet if an error occurs, i.e., it was received with errors that cannot be corrected or it was not received at all. The term “data packet” is used here in the general sense of any type of data unit. Referring to FIG. 1, a communications system 10 includes a transmitter 12 and receiver 14. The transmitter 12 sends one or more data packets to the receiver 14. The receiver 14 sends an acknowledgment (ACK) message to the transmitter 12 to indicate that it has correctly received a data packet. Alternatively, the receiver 14 sends a negative acknowledgment (NACK) message to the transmitter 12 to indicate that it has not received a data packet in time or not correctly received a data packet.
FIG. 2 illustrates the sequence of events. The transmitter 12 sends packet A to receiver 14 which detects some sort of error. So the receiver returns a NACK message. The transmitter 12 resends packet A, and because it is correctly received this second time, the receiver 14 sends an ACK message back. The next packet B can then be sent. Of course, there are more complicated ARQ schemes, such as hybrid ARQ (HARQ), which are based on this fundamental ARQ protocol. HARQ is used in radio communications to enable faster recovery from errors by storing corrupted packets in the receiving device rather than discarding them. Even if retransmitted packets have errors, a good packet can be derived from the combination of bad ones. HARQ is used, for example, in High Speed Downlink Packet Access (HSDPA), which is a 3G high-speed digital data service provided by cellular carriers to provide faster bit rates over the air interface. HSDPA is a major enhancement of Wideband Code Division Multiple Access (WCDMA) technology which adds additional channels and selectively applies different modulation and coding techniques.
FIG. 3 shows a simplified example of an HSDPA communication system 15 where a user equipment (UE) 17 (sometimes called a mobile radio terminal or station) receives data packets over the air from a base station 19 (sometimes called a Node B). The packets are transmitted downlink using a high-speed downlink shared channel (HS-DSCH). The base station uses a high-speed shared control channel (HS-SCCH) to send corresponding physical layer control information (e.g., UE identity and spreading code allocation and decoding information which also supports soft combining in case of retransmission). In the figure, the HS-SCCH is used to inform the UE 17 of the intended recipient of the data packet soon to be transmitted. In the uplink direction, the UE 17 uses a high-speed dedicated physical control channel (HS-DPCCH) to convey to the base station 19 ACK and NACK messages, preamble (PRE) and postamble (POST) messages, and feedback information on the quality of the downlink channel.
Communication over HSDPA channels occurs as frames of subframes provided during transmission time intervals (TTIs), i.e., one subframe is one TTI (e.g., 2 ms for HSDPA). One subframe on the HS-DSCH may be used to convey a data packet or other unit. To facilitate the UE's efficient decoding of a data packet in a subframe on HS-DSCH directed to that UE, the UE first receives an indication on the HS-SCCH that the packet is intended for it as well as information needed for demodulating allocated code channels. If the UE 17 determines based on the advance indicator on the HS-SCCH that the next packet is intended for UE 17, it sends a PRE message back to the base station 19 over the HS-DPCCH to acknowledge its readiness to receive and decode that data packet. After the data packet has been transmitted, which may take multiple TTIs, and the UE detects it has received the end of the packet, the UE 17 acknowledges that fact by sending a POST message back to the base station 19 over the HS-DPCCH.
FIG. 4 illustrates an example of the timing relationship between messages and packets sent on the HS-SCCH, HS-DSCH, and the HS-DPCCH. When the UE detects control information addressed to it in sub-frame N on the HS-SCCH, the UE transmits a preamble (PRE) in sub-frame N−1 on the HS-DPCCH. After decoding the HS-DSCH packet and transmitting the hybrid ARQ ACK/NACK in sub-frame N on the HS-DPCCH, the UE transmits a postamble (POST) in sub-frame N+1 on the HS-DPCCH (unless a packet is detected in sub-frame N+1 on the HS-DSCH, in which case an ACK/NACK is sent, or HS-SCCH control information is detected in subframe N+2, in which case PRE is sent). Accordingly, a series of TTIs containing ACK/NACK signals is typically preceded with a TTI containing the PRE signal. A series of TTIs containing ACK/NACK signals may be also succeeded by a TTI containing the POST signal.
To improve ACK/NACK/PRE/POST detection performance, a trellis structure may be employed by the ACK/NACK signaling channel (e.g., the HS-DPCCH) as shown in FIG. 5. For a data session, a UE of interest starts in a discontinuous transmission (DTX) state in which nothing is sent over the HS-DPCCH. As long as the HS-SCCH addresses other UEs, the UE of interest stays in the DTX state. If the HS-SCCH addresses the UE of interest, then the UE moves from the DTX state to the PRE state where a PRE message is sent over the HS-DPCCH. While in the PRE state in subframe N−1, the UE demodulates and decodes the HS-DSCH packet in subframe N and sends an ACK or NACK message over the HS-DPCCH in subframe N, depending on whether HS-DSCH is correctly received. After sending an ACK or NACK over the HS-DPCCH, the UE transitions from the PRE state to the ACK/NACK state where it can continue to receive data on the HS-DSCH in subframe N+1. In that case, the UE sends an ACK or NACK on the HS-DPCCH and remains in the ACK/NACK state. Alternatively, if there is no more data on the HS-DSCH in subframe N+1, or information on the HS-SCCH in subframe N+2 is addressed to another UE, the UE sends a POST message on the HS-DPCCH during subframe N+1 and transitions back to the DTX state. If there is no more data on the HS-DSCH for the UE in subframe N+1, but the HS-SCCH addresses the UE in subframe N+2, then that UE sends a PRE message on the HS-DPCCH during subframe N+1 and transitions back to the PRE state.
The ACK and NACK messages are important messages that need to be received reliably and correctly. Channel coding is one way to provide increased message reliability. Currently in Release 5 of HSDPA, the HARQ ACK and NACK messages are sent using repetition coding over 10 bits. In other words, a binary “1” is repeated ten times for an ACK message and a binary “0” is repeated ten times for a NACK message. The more repetition bits used to encode the message, the more reliably the receiver can accurately decode the received information and extract the message that was actually transmitted. A repetition code is a linear code in the sense that a codeword w can be represented by w=xG, where G is a so-called generator matrix for the linear code and x is the information bit (1 or 0). The generator matrix for the aforementioned repetition code is G=[1111111111].
Such a 10 bit repetition coding scheme has been employed for the ACK/NACK messages to be transmitted as illustrated in the table below where the output is denoted w0, w1, . . . w9. The PRE and POST messages are transmitted using two other codewords, also shown in Table 1.
TABLE 1HARQ-ACKmessagew0w1w2w3w4w5w6w7w8w9ACK1111111111NACK0000000000PRE0010010010POST0100100100
Multiple Input/Multiple Output (MIMO) is being introduced into wireless communications to improve transmission rates and overall performance. MIMO means that multiple transmitting antennas and/or multiple receiver antennas are used. When two transmitting antennas and two or more receiving antennas are used, two simultaneous data streams can be sent, which doubles the data rate. Multiple receivers alone allow greater distances between wireless devices.
FIG. 6 shows an example of a communications system 20 that employs dual stream MIMO. The base station 24 transmits two data streams 1 and 2 to the UE 22. In the first transmission, the first data stream in this example includes data packet A and the second data stream includes data packet B. The HS-SCCH signaling informs the UE 22 that there are two data streams being transmitted by the base station 24 over the HS-DSCH addressed to that UE 22. The UE 22 sends ACK/NACK messages for each of the two streams using the HS-DPCCH.
MIMO increases the level of ACK/NACK signaling. As illustrated in FIG. 7, in a dual or two-stream transmission (with separate encoding of each stream), there are four possible values for ACK/NACK message groups or combinations. Continuing with the example from FIG. 6, the first and second data stream transmissions from the base station of packets A and B are received, but only packet B is received successfully. Thus, a NACK message is returned for packet A (from the 1st stream) and an ACK message for packet B (from the 2nd stream). In the next TTI, the base station sends packets A and C, but only packet A is received successfully. Thus, an ACK message is returned for packet A (1st stream) and a NACK message for packet C (2nd stream). In the next TTI, the base station sends packets D (1st stream) and C (2nd stream) which are both successfully received so that the UE sends two ACK messages. The fourth ACK/NACK group or combination (not illustrated) is both transmitted packets are not received successfully resulting in the UE sending two NACK messages.
To accommodate a two stream MIMO scheme in the ten bit ACK/NACK error protection encoding scheme in the current HSDPA, those ten bits can be used to carry one ACK/NACK message for each stream by simply repeating the ACK/NACK bits five times rather than ten, five “1's” for ACK and five “0's” for NACK. In this way, two ACK/NACKs can be fit into the ten bits available in the current HS-DPCCH. With this scheme the following codewords are mapped to the different ACK/NACK combinations.
ACK (1st stream) & ACK (2nd stream): 1 1 1 1 1 1 1 1 1 1
ACK (1st stream) & NACK (2nd stream): 1 1 1 1 1 0 0 0 0 0
NACK (1st stream) & ACK (2nd stream): 0 0 0 0 0 1 1 1 1 1
NACK (1st stream) & NACK (2nd stream): 0 0 0 0 0 0 0 0 0 0
This is a linear code, and thus, the codeword can be generated by a modulo-2 operation w=xG, where the generator matrix in this case is:
  G  =      [                            1                          1                          1                          1                          1                          0                          0                          0                          0                          0                                      0                          0                          0                          0                          0                          1                          1                          1                          1                          1                      ]  and the information vector is x=[b(1) b(2)], and where b(1) is the ACK/NACK bit for the 1st stream and b(2) is the ACK/NACK bit for the 2nd stream. But a problem with this approach is that the error protection for ACK/NACK messages is considerably less than in the case of ten bit repetition coding. The result is either higher error rates, or a higher transmit power to keep the same error rate. Neither is an attractive solution. What is needed is a different coding scheme that provides the necessary error protection and optimizes the number of coding bits for multiple MIMO streams, e.g., two, three, four, etc.